package array;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class GodMiner_Lagou {

    private class GodResult {
        List<Integer> godMine = new LinkedList<>();
        Integer god = 0;

        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("开发第");
            for (Integer integer : godMine) {
                sb.append(integer + " ");
            }
            sb.append("座金矿，共得黄金 ");
            sb.append(god);
            return sb.toString();
        }
    }

    public GodResult godMiner(Integer[] godMine,Integer godMiner){
        // 500 储量需要5个人，200储量需要3个人，一共有10个人，从单位产值上看 500 储量的金矿是更划算的，应该优先开采
        // 要么全挖，要么不挖
        // 那么可选的组合有以下几种
        // 1. 存在两个储量为 500 的金矿，10个人全上，开发这两个金矿，可得黄金 1000
        // 2. 仅存在1个储量为 500 的金矿，开发者1个，其他的人开发一个200的金矿，用8人，休息2人，可得黄金 700
        // 3. 没有储量为500的金矿，全去开发储量为 200 的金矿，开采3座用9人，可得黄金 600
        GodResult godResult = new GodResult();
        for(int i=0;i<godMine.length;i++){
            if(godMine[i] == 500 && godMiner >= 5) { // 当前金矿储量为500，且剩余矿工人数大于等于5
                godResult.godMine.add(i+1);
                godResult.god += godMine[i];
                godMiner -= 5;
            }
        }
        if(godMiner >= 3) {
            for(int i=0;i<godMine.length;i++){
                if(godMine[i] == 200 && godMiner >= 3) { // 当前金矿储量为200，且剩余矿工人数大于等于3
                    godResult.godMine.add(i+1);
                    godResult.god += godMine[i];
                    godMiner -= 3;
                }
            }
        }
        return godResult;
    }


    public static void main(String[] args) {
        Integer[] godMine1 = new Integer[]{500,200,500,200,200};
        Integer[] godMine2 = new Integer[]{500,200,200,200};
        Integer[] godMine3 = new Integer[]{200,200,200,200};
        int godMiner = 10;

        GodMiner_Lagou Miner = new GodMiner_Lagou();
        System.out.println(Miner.godMiner(godMine1,godMiner));
        System.out.println(Miner.godMiner(godMine2,godMiner));
        System.out.println(Miner.godMiner(godMine3,godMiner));




    }


}
